Ubuntu和存储库是如何安装较旧的版本? 您所在的位置:网站首页 win7虚拟无线网卡 笔记本无法上网 Ubuntu和存储库是如何安装较旧的版本?

Ubuntu和存储库是如何安装较旧的版本?

#Ubuntu和存储库是如何安装较旧的版本?| 来源: 网络整理| 查看: 265

本文字数:3482,阅读时长大概:5分钟

在Ubuntu中想安装一个软件包的一个非常指定的版本?你可以通过下边的方法来轻松地完成:

sudoaptinstallpackage_name=package_version

你怎么晓得某个软件包有什么可用的版本?可以使用这个命令:

aptlist--all-versionspackage_name

在下边的屏幕截屏中,你可以听到,我有两个可用的VLC版本,我使用命令来安装较旧的版本:

打开网易新闻查看精彩图片

installspecificversionsaptubuntu

听上去像一个简单的任务linux 论坛,对吧?而且事情并非看上去这么简单。这儿有一些不确定是否会出现,并且可能会涉及的东西。

这篇教程将囊括使用或命令来安装一个具体指定的程序的版本的所有的重要的方面。

安装一个具体指定版本的程序须要晓得的事

在基于Ubuntu和Debian发行版中,你须要晓得一些关于APT和储存库是怎样工作的知识。

同一个软件包源没有较旧的版本

Ubuntu在其储存库中不保留较旧版本的软件包。在特殊的情况下,你可以暂时性地见到多个版本。比如,你运行APT更新(但不升级)时,可能会有一个可用的新版本。在APT缓存中,你可以听到同一个软件包的两个版本。并且ubuntu软件包未被升级,一旦软件包被升级到了新的版本,较旧版本的软件包将从APT缓存和储存库中移除。

使用多个软件包源来使用不同的版本

为获取同一个的软件包的多个版本,你必须得添加多个软件包源。诸如,VLC是版本3.x系列。添加将会提供(不稳定的)版本4.x系列。

同样,你可以下载不同版本的DEB文件,并安装它。

较高版本编号的版本一般有优先权

假如你有来自多个软件包源的相同名称的软件,默认情况下,Ubuntu将安装可用的最高版本编号的版本。

在上面的示例中,假如我安装VLC,这么它将会安装4.x系列的版本,而不是3.x系列的版本。

较旧版本将升级到可用的较新版本

这是另外一个可能存在的问题。就算你安装较旧版本的软件包,它也会升级到较新的版本(假如存在可用的较新版本)。你必须。

依赖关系也须要安装

倘若软件包有依赖关系,你也须要安装必要的依赖关系软件包。

如今,你已然晓得一些可能存在的问题,让我们瞧瞧怎么解决它们。

安装一个软件包的具体指定版本

在这篇教程中,我将以VLC为例。在Ubuntu的储存库中可获得VLC版本。我添加了每日建立PPA,它将向我提供VLC的4.0版本的候选版本。

如你所见,在现今的系统中,我有两个可用的VLC版本:

打开网易新闻查看精彩图片

installspecificversionsaptubuntu

~$aptlist-avlc

Listing...Done

vlc/jammy4.0.0~rc1~~git20220516+r92284+296~ubuntu22.04.1amd64

vlc/jammy3.0.16-1build7amd64

vlc/jammy3.0.16-1build7i386

由于较高版本编号版本有优先权,使用命令将会造成安装VLC的4.0版本。并且,由于这篇教程的原因,我想安装较旧的版本3.0.16。

sudoaptinstallvlc=3.0.16-1build7

然而,这儿会有这样的事。VLC软件包有一些依赖关系,而且这种依赖关系也须要具体指定的版本。为此,在Ubuntu为其尝试安装最新的版本时,你将会碰到精典的(youhaveheldbrokenpackages)错误。

打开网易新闻查看精彩图片

probleminstallingspecificversionaptubuntu

为修补这个错误,你须要为其提供它所投诉的所有依赖关系的软件包的具体指定版本。因而,该命令会弄成这样:

sudoaptinstallvlc=3.0.16-1build7

vlc-bin=3.0.16-1build7

vlc-plugin-base=3.0.16-1build7

vlc-plugin-qt=3.0.16-1build7

vlc-plugin-video-output=3.0.16-1build7

vlc-l10n=3.0.16-1build7

vlc-plugin-access-extra=3.0.16-1build7

vlc-plugin-notify=3.0.16-1build7

vlc-plugin-samba=3.0.16-1build7

vlc-plugin-skins2=3.0.16-1build7

vlc-plugin-video-splitter=3.0.16-1build7

vlc-plugin-visualization=3.0.16-1build7

说明一下,每行结尾处的只是拿来将多行命令来写入同一个命令的一种形式。

它有作用吗?在好多情况下ubuntu软件包未被升级,它是有作用的。并且,我选择了一个复杂的VLC示例,它有好多依赖关系。甚至那些所涉及的依赖关系也依赖于其它的软件包。所以,它就显得令人无法处理。

ubuntu软件包未被升级_ubuntu双系统升级win10_ubuntu 升级win10失败

一种取代的方式是在安装时指定软件包源。

代替形式,指定储存库

你已然添加多个软件包源,因而,你应当对这种软件包的来源有一些了解。

使用下边的命令来搜索储存库:

apt-cachepolicy|less

注意储存库名称前面的行:

500jammy-security/multiversei386Packages

releasev=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=multiverse,b=i386

origin

你可以具体指定o、l、a等参数。

在我原先的示例中,我想安装来自Ubuntu储存库的VLC(获取版本3.16),而不是安装来PPA的版本(它将向我提供版本4)。

为此,下边的命令将安装VLC版本3.16及其所有的依赖关系:

sudoaptinstall-t"o=ubuntu"vlc

打开网易新闻查看精彩图片

installfromrepositorysource

看上去令人满意?并且,当你必须更新系统时,问题就来了。它接出来会控告找不到指定的软件包版本。

能够做哪些?

为安装较旧的软件包版本,从你的系统中移除较新版本的软件包源(假如可能的话)。它将有助于逃脱这种依赖关系地狱。

假如不能那么做,检测你是否可以从其它一些软件包的打包格式来获取,像Snap、Flatpak、AppImage等等。事实上,Snap和Flatpak也容许你从可用的版本中选择和安装。由于那些应用程序是沙盒模式的,所以它很容易管理不同版本的依赖关系。

保留软件包,避免升级

假如你完成安装一个指定的程序版本,你可能想避开意外地升级到较新的版本。实现这一点并不太复杂。

sudoapt-markholdpackage_name

你可以减免保留软件包,便于它能稍后升级:

sudoapt-markunholdpackage_name

注意,软件包的依赖关系不会手动地保留。它们须要单独地指明。

推论

如你所见linux基础教程,安装选取软件包版本有一定之规。只有当软件包有依赖关系时,这么事情都会显得复杂,之后,你还会步入依赖关系地狱。

我希望你在这篇教程小学到一些新的东西。假如你有问题或建议来改善它,请在评论区告诉我。

via:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有